/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prjtgl.controler.membre;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.zk.ui.Component;

import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.Selectors;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.*;
import prjtgl.metier.Application;
import prjtgl.metier.comptes.Membre;
import prjtgl.metier.comptes.profil_utilisateur.DomaineExpertise;
import prjtgl.metier.comptes.profil_utilisateur.poste.Experience;
import prjtgl.util.SessionUtilisateur;

/**
 *
 * @author Adrien
 */
public class SonProfilWindow extends SelectorComposer {

	@Wire
	Div title;
	@Wire
	Div currentExperience;
	@Wire
	Div contenu;
	
	@Wire
	private Div domainesExpertise;
	
	@Wire
	private Div profilActuel;
	
	@Wire
	private Div disponibiliteActuelle;
	
	private InboxData sesExperiences;
	
	private Membre membre;

	public SonProfilWindow() {
		// Recuperation de l'utilisateur connecté
		String email = SessionUtilisateur.getUtilisateur().getEmail();
		membre = Application.getInstance().rechercherMembre(email);
		sesExperiences = new InboxData();
	}
	
	@AfterCompose
	public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
		Selectors.wireComponents(view, this, false);
		afficherProfil();
	}

	public void afficherProfil() {
		
		// Nom prenom
		title.appendChild(new Html("<h1>" + membre.getNom().toUpperCase() + " " + membre.getPrenom() + "</h1>"));
		
		// Domaines d'expertise
		List<DomaineExpertise> domaines = membre.getDomaines();
		String ponct = "";
		if(domaines != null){
			for(DomaineExpertise d : domaines){
				Div domDiv = new Div();
				domDiv.appendChild(new Label(ponct + d.getIntitule()));
				domainesExpertise.appendChild(domDiv);
			}
		}
		
		// Disponibilite
		if(membre.getDisponibilite() != null){
			disponibiliteActuelle.appendChild(new Label(membre.getDisponibilite().obtenirIntitule()));
		}
		
		// Profil actuel du membre
		profilActuel.appendChild(new Label(membre.getProfil().getIntitule()));
	}

	public InboxData getSesExperiences() {
		return sesExperiences;
	}

	public class InboxData {

		private List<Experience> sesExperiences;

		public InboxData() {
			initData();
		}

		private void initData() {
			sesExperiences = membre.getExperiences();
			if(sesExperiences == null){
				sesExperiences = new ArrayList<Experience>();
			}
		}

		public List<Experience> getSesExperiences() {
			return sesExperiences;
		}
	}
}
